//
// Created by Yurzi on 2021/4/11.
//

#ifndef CEDUGROUPWORK_UIENGINE_H
#define CEDUGROUPWORK_UIENGINE_H

#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include "GlobalDefinitions.h"
#include "DataTypes.h"
#include "RegressionPrediction.h"

/**
 *  窗口先相关
 */
//设置窗口颜色和背景 输入颜色值 前景 背景
void SetColor(UINT uFore,UINT uBack);
//改变窗口标题 输入标题字符串
void SetTitle(LPCTSTR lpTitle);
//修改窗口缓冲区大小
void SetBufferSize(int x,int y);
/**
 *  光标相关
 */
//改变光标位置
void SetPosC(COORD a);
//获取光标信息
void getCursorInfo(COORD *Pos);
//输入指定的坐标
void SetPos(int x, int y);
//设置光标现实
void HideConsoleCursor(void);
//将光标移动到行首  n代表向上移动几行
void RewindCursor(int n);

/**
 * 图形绘制相关
 */

//绘制一个点
void drawPoint(int x,int y,TCHAR content,UINT uForce,UINT uBack);
//绘制一条2点间直线
int drawLine(int x_begin,int y_begin,int x_end,int y_end,TCHAR content,UINT uForce,UINT uBack);
//绘制一个圆
int drawCircle(int x,int y,int r,int dergee_begin,TCHAR content,UINT uForce,UINT uBack,int ctrl);
//绘制一个矩形
int drawRecj(int x_begin,int y_begin,int width,int length,TCHAR contentline,TCHAR contentrow,TCHAR contentangle,UINT uForce,UINT uBack);
//画一个表格
void drawExcel(int* ax, int* ay, int nx, int ny, UINT uForce, UINT uBack);
//将指定矩形区域清空
void drawWhite(int x1, int y1, int x2, int y2);//矩形区域的对角两点坐标
//在指定矩形中输出中文长字符串（标点加空格配一对）
void printfInRecj(int x1, int y1, int x2, int y2, const char* s);
//在指定位置输出字符串
void printText(int x,int y,const TCHAR *str,UINT uForce,UINT uBack);
//换行输出字符串并拓宽表格//xw右边界坐标,x,y表示光标位置//返回最后文字的y坐标
int PrtTagName(Car* hc, int x0, int y0,int xw);

/**
 *  用户输入区相关
 */
//清除一行输入
void ClearOneLine();
//为循环的输出清除用户输入
void ForCyclePrint();
//清空输入缓冲区
void FlushInputBuffer();

#endif //CEDUGROUPWORK_UIENGINE_H
